/* 
路由:  
什么是路由?
  路由组成: 请求方式 请求路径  回调函数
  作用: 用来处理特定的请求 返回响应的内容
路由的作用流程:
  启动项目 注册路由  此时回调不执行
  浏览器发起请求 服务器接收到请求
  创建一个包含请求报文数据的request对象和代表响应的response对象
*/

// 引入
const express = require('express')

// 创建应用对象
const app = express()

// 配置静态资源
app.use(express.static('public'))

const allUsers = [
  { id: 1, name: 'tom', age: 12 },
  { id: 2, name: 'tom2', age: 13 },
  { id: 3, name: 'tom3', age: 14 },
]


app.get('/user/:id', (req, res) => {
  // 得到params参数  通过解构赋值
  const { id } = req.params
  // 找到对应的id
  const user = allUsers.find(user => user.id == id) // 三等号 要把 id转成数字型
  // 返回user 
  res.send(user)
})


// 挂载(注册)路由
app.get('/index', (req, res) => {
  console.log('get请求 ');
  // 获取请求报文相关的基本数据
  console.log(req.method)
  console.log(req.url)
  console.log(req.httpVersion)
  console.log(req.headers['host'])
  console.log(req.path);
  // query 参数
  const {a,b} = req.query
  console.log('query参数 :',a , b);
  // 提交
  res.send('<p>hello  get</p>')
})


// post 请求 携带body参数
app.post('/index', (req, res) => {
  console.log('处理 /index  post请求 ');
 
  // body参数 (请求体参数)
  console.log('body参数', req.body)  // 需要使用到后面一个中间件来处理才可用

  res.send('<p>hello  post</p>')
})


// 启动服务 监听指定端口
app.listen('8801', () => {
  console.log('serve已启动: http://127.0.0.1:8801');
})